package com.nfcpay;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.nfc.NdefMessage;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
/**
 * Classe responsável por selecionar comprador ou vendedor
 * @author Andre Freitas
 *
 */

public class MainActivity extends Activity {
	private static final String TAG = "mainActivity";

	private static final boolean debug = false;
	
	NfcAdapter mNfcAdapter;
	PendingIntent nfcPendingIntent;
	private TextView texto;
	private boolean  isSend = false;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	Log.i(TAG, "[ACTIVITY] onCreate");
        super.onCreate(savedInstanceState);
        System.out.println("teste");
        setContentView(R.layout.main);
        texto = (TextView) findViewById(R.id.textView1);
        mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
        //Se for null, não existe NFC
        if(mNfcAdapter == null){
			Toast.makeText(this, "NFC não está disponível", Toast.LENGTH_LONG).show();
			finish();
			return;
		}
        nfcPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, this.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
    }
    
	@Override
	protected void onStart() {
		Log.i(TAG, "[ACTIVITY] onStart");
		super.onStart();
	}
	
	@Override
	protected void onResume() {
		Log.i(TAG, "[ACTIVITY] onResume");
		super.onResume();
		if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())){
			if(!isSend){
				isSend = true;
				processIntent(getIntent());
			}
		}
	}
	
	@Override
    public void onNewIntent(Intent intent) {
        // onResume gets called after this to handle the intent
        setIntent(intent);
    }
	
	/**
     * Responsável por receber e despachar a mensagem para a activity correta
     */
    public void processIntent(Intent intent) {
        Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
                NfcAdapter.EXTRA_NDEF_MESSAGES);
        // only one message sent during the beam
        NdefMessage msg = (NdefMessage) rawMsgs[0];
        // record 0 contains the MIME type, record 1 is the AAR, if present
        String wichIntent = new String(msg.getRecords()[0].getPayload());
        if(debug)
        	texto.setText(wichIntent);
        
        //criar bundle para atrelar ao intent
        Bundle bMsg = new Bundle();
        //separa identificador do recibo 
        String splitMsg[] = wichIntent.split(";");
        //seta recibo no bundle
        bMsg.putString("msg", splitMsg[1]);
        //se contem vendedor; quer dizer que a mensagem veio do vendedor
        //logo irá iniciar a atividade do comprador
        if(wichIntent.contains("vendedor;")){
        	isSend = false;
        	Intent iComprador = new Intent(this, CompradorActivity.class);
        	iComprador.putExtras(bMsg);
        	startActivity(iComprador);
        }
        //se contem comprador; quer dizer que a mensagem veio do comprador
        //logo irá iniciar a atividade do vendedor
        else if(wichIntent.contains("comprador;")){
        	isSend = false;
        	//atrelando a assinatura ao bundle
        	bMsg.putByteArray("assinatura", msg.getRecords()[2].getPayload());
        	
        	Intent iVendedor = new Intent(this, VendedorActivity.class);
        	iVendedor.putExtras(bMsg);
        	startActivity(iVendedor);
        }
    }
	
    /**
     * funcionalidade vendedor
     */
	public void vendedorActivity(View view){
    	Intent iVendedor = new Intent(this, VendedorActivity.class);
    	startActivity(iVendedor);
    }
    /**
     * funcionalidade comprador
     */
    public void compradorActivity(View view){
    	Intent iComprador = new Intent(this, CompradorActivity.class);
    	startActivity(iComprador);
    }
    
}